package cn.com.pc.content.controller;

import cn.com.pc.content.domain.Biz;
import cn.com.pc.content.domain.Site;
import cn.com.pc.content.domain.content.ContentType;
import cn.com.pc.content.dto.*;
import cn.com.pc.content.service.ContentListService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.Map;
import java.util.Set;

/**
 * 召回类 controller
 */
@RestController
@RequestMapping("/content")
public class ContentListController {

    @Autowired
    private ContentListService contentListService;


    /**
     * 召回含有tagId的内容列表，传多个tagIds时召回多个列表
     *
     * @param site
     * @param biz
     * @param contentType
     * @param tagIds
     * @param sort
     * @param pageForm
     * @return
     */
    @GetMapping("/recall")
    public Map<Long, PageResult<? extends ContentDTO>> listRecall(@RequestAttribute("site") Site site, @RequestAttribute("biz") Biz biz, @RequestAttribute("contentType") ContentType contentType, @RequestParam("tagIds") Set<Long> tagIds, Sort sort, PageForm pageForm) {
        return contentListService.listRecall(site, contentType, tagIds, pageForm, sort);
    }


    /**
     * 终端详情页接口/文章视图接口（查询文章列表）：
     * 终端详情页包括：帖子、文章、问答、话题、视频、短视频
     *
     * @param site        站点
     * @param biz         业务
     * @param contentType 内容类型
     * @param contentForm 表单
     * @param sort        排序
     * @param viewType    视图类型
     * @return
     */
    @GetMapping("/detail")
    public PageResult<?> detail(@RequestAttribute("site") Site site, @RequestAttribute("biz") Biz biz, @RequestAttribute("contentType") ContentType contentType, ContentForm contentForm, Sort sort, String viewType) {
        contentForm.setSite(site);
        contentForm.setBiz(biz);
        return contentListService.detail(site, biz, contentForm, sort, contentType, viewType);
    }


}
